/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucsur.PuntoDeVentas.DataAccess;

import edu.ucsur.PuntoDeVentas.BusinessEntity.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Jorge
 */

public class ADProducto {

    /* INICIO: Singleton */
    private static ADProducto _instance = null;

    public static ADProducto Instance()
    {
        if (_instance == null)
            _instance = new ADProducto();
        return _instance;    
    }
    /* FIN: Singleton */
    
    
    private Connection conn;
    public ADProducto() {
    }

    
    public List<ENProducto> getListar() throws Exception {
        try {
            conn = ADDBConnection.getConnection();
            List<ENProducto> oListENProducto = new ArrayList<ENProducto>();
            
            String sql = "select * from Producto ";
            //-- Preparando la sentencia en Java
            Statement pstmt = conn.createStatement();
            //-- Una vez que el SQL está listo para ejecutarse
            //-- se lanza. El resultado se recibe en una variable
            //-- de tipo ResultSet (cursor)
            ResultSet rs = pstmt.executeQuery(sql);
            //-- Recorriendo el resultset
            while (rs.next()) {
            ENProducto oENProducto = new ENProducto();
            oENProducto.setidProducto(rs.getInt("idProducto"));
            oENProducto.setsDesProducto(rs.getString("sDesProducto"));
            oListENProducto.add(oENProducto);
            }
            return oListENProducto;
        } catch (Exception ex) {
            ex.printStackTrace();
            throw ex;
        } finally {
            conn.close();
        }
    }

    public boolean insertar(ENProducto oENProducto) throws Exception 
    {
        try 
        {
            conn = ADDBConnection.getConnection();
            //-- Armando la sentencia SQL
            String sql = "insert into Producto ( idTipoProducto, sDesProducto, dPrecioxUni, iCantidad) " +
                        " values ( ?, ?, ?, ?)";
            //-- Preparando la sentencia en Java
            PreparedStatement pstmt = conn.prepareStatement(sql);
            //-- ¿Y como seteamos los parametros?
            //-- Simple, con setters
            pstmt.setInt(1, oENProducto.getidTipoProducto());
            pstmt.setString(2, oENProducto.getsDesProducto());
            pstmt.setDouble(3, oENProducto.getdPrecio());
            pstmt.setInt(4, oENProducto.getiCantidad());
            //-- Una vez que el SQL está listo para ejecutarse
            //-- se lanza. El resultado se recibe en una variable
            //-- de tipo ResultSet (cursor)
            pstmt.execute();
            return true;
            }
        catch (Exception ex) 
        {
            ex.printStackTrace();
            throw ex;
        } 
        finally 
        {
            conn.close();
        }
    }

}